package com.example.suuu.tools.excel.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.example.suuu.project.system.entity.SuUser;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

/**
 * 给Listener创建成员变量，然后在构造方法里面传进去。必须不让spring管理Listener，每次读取    都要new一个。
 */
@Slf4j
public class SuUserExcelListener extends AnalysisEventListener<SuUser> {

    public SuUserExcelListener() {
    }

    private static final Logger logger = LoggerFactory.getLogger(SuUserExcelListener.class);
    private static final int BATCH_COUNT = 500;

    List cableList = new ArrayList();

    @Override
    public void invoke(SuUser excelData, AnalysisContext context) {

        log.info("9999:"+excelData.toString());
        //list列表长度到达BATCH_COUNT就插入数据库，避免OOM
        if(cableList.size() >= BATCH_COUNT) {
            saveData();
        }
    }
    /**
     * 所有数据解析完成了会调用
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //将列表中剩余的数据也插入到数据库中
        if(!cableList.isEmpty()) {
            saveData();
        }
        log.info("所有数据存储完成");
    }
    //数据库持久化操作
    void saveData() {

    }
}


